package com.angel.bo.message.component.rocketmq;

import com.aliyun.openservices.ons.api.ONSFactory;
import com.aliyun.openservices.ons.api.Producer;
import com.aliyun.openservices.ons.api.PropertyKeyConst;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * @author zhangwei
 * @date 2018/9/25 14:59
 * @desc MQ生产者配置信息
 */
@Configuration
public class ProducerConfiguration {

    @Value("${ali.mq.accessKey}")
    private String accessKey;
    @Value("${ali.mq.secretKey}")
    private String secretKey;
//    private final String producerId = "PID_MUSIC_CP_PRODUCER";

    /**
     * 阿里mq公网连接地址
     */
    private final String ONS_ADDR = "http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet";

    @Bean
    public Producer broadCastClient() {
        Properties properties = new Properties();
        // AccessKey 阿里云身份验证，在阿里云服务器管理控制台创建
        properties.put(PropertyKeyConst.AccessKey, accessKey);
        // SecretKey 阿里云身份验证，在阿里云服务器管理控制台创建
        properties.put(PropertyKeyConst.SecretKey, secretKey);
        //设置发送超时时间，单位毫秒
        properties.setProperty(PropertyKeyConst.SendMsgTimeoutMillis, "3000");
        // 设置 TCP 接入域名（此处以公共云生产环境为例）
        properties.put(PropertyKeyConst.ONSAddr, ONS_ADDR);
        Producer producer = ONSFactory.createProducer(properties);
        // 在发送消息前，必须调用 start 方法来启动 Producer，只需调用一次即可
        producer.start();
        // 在应用退出前，销毁 Producer 对象   producer.shutdown();
        // 注意：如果不销毁也没有问题
        System.out.println("Producer Started");
        return producer;
    }

}
